//! \file DbEnum.h
//! \brief TODO: Document
// -----------------------------------------------------------------------------
//! This program is free software; you can redistribute it and/or
//! modify it under the terms of the GNU General Public License
//! as published by the Free Software Foundation; either version 2
//! of the License, or (at your option) any later version.
//!
//! This program is distributed in the hope that it will be useful,
//! but WITHOUT ANY WARRANTY; without even the implied warranty of
//! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//! GNU General Public License for more details.
//!
//! You should have received a copy of the GNU General Public License
//! along with this program; if not, write to the Free Software Foundation,
//! Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
// -----------------------------------------------------------------------------
#ifndef dDB_ENUM_H_
#define dDB_ENUM_H_

#include "DataTypes.h"
#include "DbKeys.h"
#include "DbError.h"
#include <sqlite3.h>

//#ifdef __cplusplus
//  extern "C" {
//#endif

namespace DB {

  // TODO: comment
  class Enum
  {
    public:

      // ===== [ Public Members ]===============================================

      // ===== [ Public Methods ]===============================================
      static eDbEnum Get(eKeyEnum Key, tDB_INST Instance, tERROR* pError);
      static tERROR Set(eKeyEnum Key, tDB_INST Instance, eDbEnum Value);

    private:

      // ===== [ Private Members ]==============================================

      // ===== [ Private Methods ]==============================================
      static tERROR Initialize(sqlite3* pDataBase);
      static tERROR CreateTable(void);
      static tERROR CreateKeys(void);
      static tERROR DefaultValues(void);
      static int CountRows(eKeyEnum Key, tDB_INST Instance);

  };

} // namespace DB
//
//  // ===========================================================================
//  // DB_GetEnum
//  // ---------------------------------------------------------------------------
//  //! TODO: document
//  //!
//  //! \param [in] Arg
//  //!   TODO: document
//  //!
//  //! \retval Exception
//  //!   The success status of the requested operation.
//  //!   - eOKAY: Execution occurred as requested.
//  //!   .
//  //!
//  //! \b Example: \code
//  //! FxName(0);
//  //! \endcode
//  // ---------------------------------------------------------------------------
//  eBoolean DB_GetEnum(eKeyEnum Key, tDB_INST Instance, tERROR* pError);
//
//  // ===========================================================================
//  // DB_SetEnum
//  // ---------------------------------------------------------------------------
//  //! TODO: document
//  //!
//  //! \param [in] Arg
//  //!   TODO: document
//  //!
//  //! \retval Exception
//  //!   The success status of the requested operation.
//  //!   - eOKAY: Execution occurred as requested.
//  //!   .
//  //!
//  //! \b Example: \code
//  //! FxName(0);
//  //! \endcode
//  // ---------------------------------------------------------------------------
//  tERROR DB_SetEnum(eKeyEnum Key, tDB_INST Instance, eBoolean Value);

//#ifdef __cplusplus
//  }
//#endif

#endif // dDB_ENUM_H_
